%根据直方图定义，通过结构化编程方式给出2-1）中灰度图像的概率形式的直方图
function plotProbabilityHistogram(imagePath)
    % 读取图像
    img = imread(imagePath);
    
    % 确保是灰度图像，如果不是，则转换为灰度
    if size(img, 3) == 3
        img = rgb2gray(img);
    end
    
    % 获取图像尺寸
    [height, width] = size(img);
    
    % 初始化灰度级计数器
    grayLevels = 0:255; % 从0到255的灰度级
    pixelCounts = zeros(1, 256); % 初始化计数数组
    
    % 遍历图像，计算每个灰度级的像素数量
    for i = 1:height
        for j = 1:width
            pixelCounts(img(i,j)+1) = pixelCounts(img(i,j)+1) + 1; % 注意加1是因为MATLAB索引从1开始
        end
    end
    
    % 计算概率直方图
    totalPixels = height * width;   %总的像素数
    probabilityHistogram = pixelCounts / totalPixels;
    
    % 绘制概率直方图
    figure;
    bar(grayLevels, probabilityHistogram, 'EdgeColor', 'none'); % 使用bar函数绘制直方图，不显示柱状边缘颜色以美化图形
    axis tight; % 紧凑布局，确保x轴范围准确对应灰度级
    title('编程概率直方图');
    xlabel('Gray Level');
    ylabel('Probability');
    xlim([0 255]); % 设置x轴限，确保覆盖所有灰度级
%      ylim([0 1]); % 设置y轴限，确保概率值在0到1之间 取消注释就会变得非常小
end